package core;

import event.*;


/**
 * ControllerObserver
 * This interface will be implemented by any entity willing to be notified
 * regarding ocurring events.
 */
public interface ControllerObserver {
	
	/**
	 * Handler for the Wall event.
	 * 
	 * @param args Event arguments.
	 */
	public void wallEventHandler(WallEventArgs args);
	
	
	/**
	 * Handler for the Chat event.
	 * 
	 * @param args Event arguments.
	 */
	public void chatEventHandler(ChatEventArgs args);
	
	
	/**
	 * Handler for the ChatFailed event.
	 * 
	 * @param args Event arguments.
	 */
	public void chatFailedEventHandler(ChatFailedEventArgs args);
	
	
	/**
	 * Handler for the UserLoggedIn event.
	 * 
	 * @param args UserLoggedIn arguments.
	 */
	public void userLoggedInEventHandler(UserLoggedInEventArgs args);
	
	
	/**
	 * Handler for the UserLoggedOut event.
	 * 
	 * @param args UserLoggedOut arguments.
	 */
	public void userLoggedOutEventHandler(UserLoggedOutEventArgs args);
	
	
	/**
	 * Handler for the RegistrationSuccessful event.
	 * 
	 * @param args RegistrationSuccessful arguments.
	 */
	public void registrationSuccessfulEventHandler(RegistrationSuccessfulEventArgs args);
	
	
	/**
	 * Handler for the RegistrationFailed event.
	 * 
	 * @param args RegistrationFailed arguments.
	 */
	public void registrationFailedEventHandler(RegistrationFailedEventArgs args);
	
	
	/**
	 * Handler for the InvitationReceived event.
	 * 
	 * @param args InvitationReceived arguments.
	 */
	public void invitationReceivedEventHandler(InvitationReceivedEventArgs args);
	
	
	/**
	 * Handler for the InvalidInvitationReceived event.
	 * 
	 * @param args InvalidInvitationReceived arguments.
	 */
	public void invalidInvitationReceivedEventHandler(InvalidInvitationReceivedEventArgs args);
	
	
	/**
	 * Handler for the InvitationReply event.
	 * 
	 * @param args InvitationReply arguments.
	 */
	public void invitationReplyEventHandler(InvitationReplyEventArgs args);
	
	
	/**
	 * Handler for the InvitationTimedOut event.
	 * 
	 * @param args InvitationTimedOut arguments.
	 */
	public void invitationTimedOutEventHandler(InvitationTimedOutEventArgs args);
	
	
	/**
	 * Handler for the InvalidInvitationReply event.
	 * 
	 * @param args InvalidInvitationReply arguments.
	 */
	public void invalidInvitationReplyEventHandler(InvalidInvitationReplyEventArgs args);
	
	
	/**
	 * Handler for the MatchStarted event.
	 * 
	 * @param args MatchStarted arguments.
	 */
	public void matchStartedEventHandler(MatchStartedEventArgs args);
	
	
	/**
	 * Handler for the MatchEnded event.
	 * 
	 * @param args MatchEnded arguments.
	 */
	public void matchEndedEventHandler(MatchEndedEventArgs args);
	
	
	/**
	 * Handler for the PlayerMove event.
	 * 
	 * @param args PlayerMove arguments.
	 */
	public void playerMoveEventHandler(PlayerMoveEventArgs args);
	
	
	/**
	 * Handler for the InvalidMove event.
	 * 
	 * @param args InvalidMove arguments.
	 */
	public void invalidMoveEventHandler(InvalidMoveEventArgs args);
	
	
	/**
	 * Handler for the ListPlayers event.
	 * 
	 * @param args ListPlayers arguments.
	 */
	public void listPlayersEventHandler(ListPlayersEventArgs args);
	
	
	/**
	 * Handler for the LoginFailed event.
	 * 
	 * @param args LoginFailed arguments.
	 */
	public void loginFailedEventHandler(LoginFailedEventArgs args);
	
	
	/**
	 * Handler for the ClientPing event.
	 * 
	 * @param args ClientPing arguments.
	 */
	public void clientPingEventHandler(ClientPingEventArgs args);


	/**
	 * Handler for the ListMatchsReply event.
	 * 
	 * @param args ListMatchsReply arguments.
	 */
	public void listMatchsReplyEventHandler(ListMatchsReplyEventArgs args);


	/**
	 * Handler for the ListGamesReply event.
	 * 
	 * @param args ListGamesReply arguments.
	 */
	public void listGamesReplyEventHandler(ListGamesReplyEventArgs args);	
	
	
	/**
	 * Handler for the InvalidUserDetailsRequest event.
	 * 
	 * @param args InvalidUserDetailsRequest arguments.
	 */
	public void invalidUserDetailsRequestEventHandler(InvalidUserDetailsRequestEventArgs args);


	/**
	 * Handler for the UserDetailsReply event.
	 * 
	 * @param args UserDetailsReply arguments.
	 */
	public void userDetailsReplyEventHandler(UserDetailsReplyEventArgs args);


	/**
	 * Handler for the AccountCreationSuccessful event.
	 * 
	 * @param args AccountCreationSuccessful arguments.
	 */
	public void accountCreationSuccessfulEventHandler(AccountCreationSuccessfulEventArgs args);


	/**
	 * Handler for the AccountCreationFailed event.
	 * 
	 * @param args AccountCreationFailed arguments.
	 */
	public void accountCreationFailedEventHandler(AccountCreationFailedEventArgs args);


	/**
	 * Handler for the AccountEditionSuccessful event.
	 * 
	 * @param args AccountEditionSuccessful arguments.
	 */
	public void accountEditionSuccessfulEventHandler(AccountEditionSuccessfulEventArgs args);


	/**
	 * Handler for the AccountEditionFailed event.
	 * 
	 * @param args AccountEditionFailed arguments.
	 */
	public void accountEditionFailedEventHandler(AccountEditionFailedEventArgs args);


	/**
	 * Handler for the AccountRemotionSuccessful event.
	 * 
	 * @param args AccountRemotionSuccessful arguments.
	 */
	public void accountRemotionSuccessfulEventHandler(AccountRemotionSuccessfulEventArgs args);


	/**
	 * Handler for the AccountRemotionFailed event.
	 * 
	 * @param args AccountRemotionFailed arguments.
	 */
	public void accountRemotionFailedEventHandler(AccountRemotionFailedEventArgs args);


	/**
	 * Handler for the ListPluginsReply event.
	 * 
	 * @param args ListPluginsReply arguments.
	 */
	public void listPluginsReplyEventHandler(ListPluginsReplyEventArgs args);


	/**
	 * Handler for the PluginOperationFailed event.
	 * 
	 * @param args PluginOperationFailed arguments.
	 */
	public void pluginOperationFailedEventHandler(PluginOperationFailedEventArgs args);


	/**
	 * Handler for the PluginOperationSuccessful event.
	 * 
	 * @param args PluginOperationSuccessful arguments.
	 */
	public void pluginOperationSuccessfulEventHandler(PluginOperationSuccessfulEventArgs args);
}
